﻿// Necroz project team © <2015> <ArchLord2EMU>
// 
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.
// 
// Author:Sagara
// Date:2015-09-06-19:36

using AL2Login.Configs;
using ArchLord2Commons.IoC.Interfaces;
using ArchLord2Commons.Network;
using NLog;

namespace AL2Login.Network
{
    internal class NetworkService : IGlobalMember
    {
        private static readonly Logger Log = LogManager.GetLogger(typeof(NetworkService).Name);

        private static readonly IAALFrameHandler FramesHandler = new LoginFrameHandler();

        private static readonly ArchLordServer<Al2Connection> ClientsListener =
            new ArchLordServer<Al2Connection>(FramesHandler);

        public void Initilize()
        {
            var networkConfiguration = NetworkCfg.Default;

            ClientsListener.StartListening(networkConfiguration.LoginServerIp, networkConfiguration.LoginServerPort, networkConfiguration.LoginServerMaxConnections);

            Log.Debug("Listening for new client connections at '{0}:{1}'", networkConfiguration.LoginServerIp, networkConfiguration.LoginServerPort);
        }

        public void Release()
        {
            ClientsListener.Dispose();
        }
    }
}
